package com.example.demo;

import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.util.List;
import java.util.Random;

public class RunableEnable implements  Runnable{

    private ListOperations<String,String> ops;

    private Miao miao;
    private List<Miao> list;

    private StringRedisTemplate stringRedisTemplate;

    public RunableEnable(ListOperations<String,String> ops,Miao miao,List<Miao> list,StringRedisTemplate stringRedisTemplate){
        this.ops=ops;
        this.miao=miao;
        this.list=list;
        this.stringRedisTemplate=stringRedisTemplate;
    }
    @Override
    public void run() {
        //判断能否购买商品

        String act=(String) stringRedisTemplate.opsForHash().get("activity","t1Activity");
        if(null==act){
            //活动已经过期
        }
        //act转化为对象，获取活动的信息
        //判断时间是否有效等情况
          //秒杀核心
        String str = ops.rightPop("listl");
        if(str!=null) {
            //秒杀成功

            //抛出异常，回滚(try中的放在serice层，外面try)，并把秒杀到的商品还给队列  try-catch-finally,还可以再加一个map
            try {
                if (1 == 1) {
//  String str = ops.rightPop("listl");这个放在try中更好（猜想，在考虑下）
                    System.out.println("----更新MYSQL，秒杀人:" + miao.getUserId() + "   商品:" + str);
                    //生成订单，可以活动过后修改库存，也可以插入订单的时候i需改库存
                    miao.setGoods(str);
                    list.add(miao);
                }
            }
            catch (Exception e){
                //杀到的商品还给队列。log
                ops.leftPush("list1", str);
            }
            }else{
                System.out.println("商品抢完");
            }

    }
}
